﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Proyecto_e.Models;
using System.Data;
using System.Data.Objects;


namespace Proyecto_e.Models
{
    public class ModeloPregunta
    {
        [Required]
        public string id_pregunta { set; get; }
        [Required]
        public string id_encuesta { set; get; }
        [Required]
        public string id_tipo_pregunta { set; get; }
        [Required]
        public string enunciado { set; get; }
        [Required]
        proyecto_eEntities1 entidades = new proyecto_eEntities1();

        public void insertarBD(Pregunta p)
        {
            pregunta nueva = new pregunta(); 
            nueva.ID_ENCUESTA =Convert.ToInt32(p.id_encuesta);
            nueva.ID_USUARIO = Convert.ToInt32(p.id_usuario);
            nueva.ID_TIPO_PREGUNTA = Convert.ToInt32(tipo_pregunta(p.id_tipo_pregunta));
            nueva.ENUNCIADO = p.enunciado;           
            entidades.AddTopregunta(nueva);
            entidades.SaveChanges();
            entidades.AcceptAllChanges();

        }

        public void actualizarBD(Pregunta p)
        {
            pregunta nueva = new pregunta();
            nueva.ID_PREGUNTA = p.id_pregunta;
            nueva.ID_ENCUESTA = Convert.ToInt32(p.id_encuesta);
            nueva.ID_USUARIO = Convert.ToInt32(p.id_usuario);
            nueva.ID_TIPO_PREGUNTA = Convert.ToInt32(tipo_pregunta(p.id_tipo_pregunta));
            nueva.ENUNCIADO = p.enunciado;
            RefreshMode r = new RefreshMode();
            r = RefreshMode.StoreWins;
            entidades.Refresh(r, nueva);
            entidades.SaveChanges();
            entidades.AcceptAllChanges();            

        }
        public void eliminarBD(int id)
        {
            var pregunta = entidades.pregunta.First(n => n.ID_PREGUNTA == id);
            entidades.DeleteObject(pregunta);
            entidades.SaveChanges();
        }

        public List<pregunta> ListarPreguntas(int id_encuesta, int id_usuario)
        {
            var listado = entidades.pregunta.Where("it.ID_USUARIO = " + id_usuario + " and " + "it.ID_ENCUESTA = " + id_encuesta);
            return listado.ToList();
        }

        public int id_ultima_pregunta(int id_usuario, int id_encuesta)
        {
            var listado = entidades.pregunta.Where("it.ID_USUARIO = " + id_usuario + " and " + "it.ID_ENCUESTA = " + id_encuesta);
            if (listado.Count() > 0)
                return listado.ToList().Last().ID_PREGUNTA;
            else
                return 1;
        }

        public int tipo_pregunta(string tipo)
        {
            if (tipo.CompareTo("Respuesta única") == 0)
            {
                return 1;
            }
            else if (tipo.CompareTo("Múltiple respuesta") == 0)
            {
                return 2;
            }
            else if (tipo.CompareTo("Respuesta desplegable") == 0)
            {
                return 3;
            }
            else if (tipo.CompareTo("Respuesta abierta") == 0)
            {
                return 4;
            }
            else
            {
                return 0;
            }
        }
    }
}